package com.example.utils;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 日志工具类，统一管理系统日志
 */
public class LogUtils {
    private static final Logger businessLogger = LoggerFactory.getLogger("business");
    private static final Logger operationLogger = LoggerFactory.getLogger("business");
    private static final Logger errorLogger = LoggerFactory.getLogger("error");
    private static final Logger systemLogger = LoggerFactory.getLogger("system");
    private static final Logger securityLogger = LoggerFactory.getLogger("security");

    /**
     * 记录普通信息日志
     * @param tag 日志标签
     * @param message 日志信息
     */
    public static void info(String tag, String message) {
        businessLogger.info("[{}] {}", tag, message);
    }

    /**
     * 记录错误日志
     * @param tag 日志标签
     * @param message 错误信息
     * @param e 异常对象
     */
    public static void error(String tag, String message, Throwable e) {
        errorLogger.error("[{}] {}", tag, message, e);
    }

    /**
     * 记录错误日志（无异常对象）
     * @param tag 日志标签
     * @param message 错误信息
     */
    public static void error(String tag, String message) {
        errorLogger.error("[{}] {}", tag, message);
    }

    /**
     * 记录系统日志
     * @param tag 日志标签
     * @param message 系统信息
     */
    public static void system(String tag, String message) {
        systemLogger.info("[{}] {}", tag, message);
    }

    /**
     * 记录安全相关日志
     * @param tag 日志标签
     * @param message 安全信息
     */
    public static void security(String tag, String message) {
        securityLogger.info("[{}] {}", tag, message);
    }

    /**
     * 记录警告日志
     * @param tag 日志标签
     * @param message 警告信息
     */
    public static void warn(String tag, String message) {
        businessLogger.warn("[{}] {}", tag, message);
    }

    /**
     * 记录调试日志
     * @param tag 日志标签
     * @param message 调试信息
     */
    public static void debug(String tag, String message) {
        businessLogger.debug("[{}] {}", tag, message);
    }

    /**
     * 记录业务操作日志
     * @param logger 日志记录器
     * @param operation 操作类型
     * @param message 操作信息
     * @param userId 操作用户ID
     */
    public static void logBusinessOperation(Logger logger, String operation, String message, Long userId) {
        logger.info("[OPERATION: {}] [USER: {}] {}", operation, userId, message);
    }
}